const { createLogger, format, transports } = require('winston');
const { combine, timestamp, label, printf } = format;

// 创建日志格式
const myFormat = printf(({ level, message, label, timestamp }) => {
  return `${timestamp} [${label}] ${level}: ${message}`;
});

// 自定义时间格式
const customTimestamp = () => {
  // const now = new Date();
  // return now.toISOString().replace('T', ' ').replace('Z', '');
  // 或者使用 moment
  const moment = require('moment');
  return moment().format('YYYY-MM-DD HH:mm:ss.SSS');
};

// 配置Winston日志记录器
const createLogs = (labelText = 'error', filename = 'error') => {
  // 获取当前日期
  const date = new Date();
  // 获取年份
  const year = date.getFullYear();
  // 获取月份（注意：月份是从0开始的，所以需要加1）
  const month = String(date.getMonth() + 1).padStart(2, '0');
  // 获取日期
  const day = String(date.getDate()).padStart(2, '0');
  // 组合成年/月/日的格式
  const formattedDate = `${year}-${month}-${day}`;
  // 日志文件名称
  let logsfileName = 'logs/' + filename+'-' + formattedDate + '.log';

  return createLogger({
    format: combine(
      label({ labelText }),
      timestamp({ format: customTimestamp }),
      myFormat
    ),
    transports: [
      new transports.Console(), // 输出到控制台
      new transports.File({ filename: logsfileName }) // 输出到文件
    ]
  });
}

module.exports = createLogs;